﻿'Imports EVOLTA.Seguridad.Bl.Be
'Imports EVOLTA.Seguridad.Bl.Bc
'Imports EVOLTA.Seguridad.Bl.Ctrl
Imports EVOLTA.Promocion.Bl.Bc
Imports EVOLTA.Promocion.Bl.Be
Imports EVOLTA.Promocion.Bl.Ctrl

Partial Class seguridad_usuario
    Inherits System.Web.UI.Page
    Implements System.Web.UI.ICallbackEventHandler
    Private personals As List(Of Epersonal) = Nothing
    Dim expression As String = Nothing
    Dim direction As SortDirection = SortDirection.Ascending
    Private Proyectos As List(Of Eproyecto) = Nothing

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load

        If Not IsPostBack Then
            Me.Master.mostrarMenu = True

            Response.CacheControl = "no-cache"
            Response.AddHeader("Pragma", "no-cache")
            Response.Expires = -1

            Me.Page.ClientScript.GetPostBackClientHyperlink(Me.btnGuardar, String.Empty)
            Dim sb As New StringBuilder
            sb.Append(Me.Page.ClientScript.GetPostBackEventReference(Me.btnGuardar, vbNullString))
            sb.Append(";")

            btnGuardar.Attributes("onclick") = sb.ToString()
            btnAgregar.Attributes.Add("onclick", "MuestraPanel(); return false;")


            cargarPersonal()
            cargarTpoDmto()
            cargarEstado()
            cargarPerfil()


        End If

        Dim cbReference As String
        cbReference = Page.ClientScript.GetCallbackEventReference(Me, "arg", "ReceiveServerData", "null", True)
        Dim callbackScript As String = ""
        callbackScript &= "function CallTheServer(arg)" & _
                          "{" & cbReference & "; }"
        Page.ClientScript.RegisterClientScriptBlock(Me.GetType(), "CallTheServer", callbackScript, True)


    End Sub
    Protected Sub btnBuscar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnBuscar.Click
        gvwLista.DataSource = Buscar(txtBuscar.Value.ToUpper.Trim)
        gvwLista.DataBind()
    End Sub
    Private Function Buscar(ByVal filtro As String) As IEnumerable(Of Epersonal)
        Dim Lpersonal As System.Collections.Generic.IEnumerable(Of Epersonal) = Nothing
        personals = Session("lista")
        If Not personals Is Nothing Then
            If filtro.Length > 0 Then
                Dim x As Int32 = Asc(filtro.Substring(0, 1).Trim)
                If x >= 48 AndAlso x <= 57 Then
                    filtro = CType(filtro, Int32)
                    Lpersonal = From v In personals _
                                Where v.idPersonal = filtro _
                                Select v
                    Return Lpersonal
                Else
                    Lpersonal = From v In personals _
                                Where v.NombresCompletos Like "*" + filtro + "*" _
                                Select v
                End If
            Else
                Lpersonal = From v In personals _
                            Where v.NombresCompletos Like "*" + filtro + "*" _
                            Select v
            End If
        End If
        Return Lpersonal
    End Function
    Protected Sub btnExcel_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnExcel.Click
        personals = Session("lista")
        If Not personals Is Nothing Then
            Dim fileName As String = "Consulta{0}.xls"
            fileName = String.Format(fileName, DateTime.Now.ToShortDateString())
            Dim Response As HttpResponse = HttpContext.Current.Response
            Response.ContentType = "application/vnd.ms-excel"
            Response.Charset = "UTF-8"
            Response.ContentEncoding = System.Text.Encoding.Default
            Response.AddHeader("Content-Disposition", "attachment; filename=" + fileName)

            Response.Write("Id")
            Response.Write(vbTab)
            Response.Write("Nombre Completo")
            Response.Write(vbTab)
            Response.Write("Usuario")
            Response.Write(vbTab)
            Response.Write("Contraseña")
            Response.Write(vbTab)
            Response.Write("Estado")
            Response.Write(vbTab)
            Response.Write(vbCrLf)

            Dim value As String
            For Each personal In personals
                value = personal.idPersonal
                Response.Write(value)
                Response.Write(vbTab)

                value = personal.NombresCompletos
                Response.Write(value)
                Response.Write(vbTab)

                value = personal.Eusuario.usuario
                Response.Write(value)
                Response.Write(vbTab)

                value = personal.Eusuario.contraseña
                Response.Write(value)
                Response.Write(vbTab)

                value = personal.descEstado
                Response.Write(value)
                Response.Write(vbCrLf)
            Next
            Response.End()
        Else
            Response.Write("La consulta no pudo ser procesada.  Por favor inténtelo de nuevo")
        End If
    End Sub

    Private Sub cargarPersonal()
        personals = Rpersonal.SeleccionarTodo(Me.Master.descEmpresa, False)
        Session("lista") = personals
        If Not personals Is Nothing Then
            gvwLista.DataSource = personals
            gvwLista.DataBind()
        End If
    End Sub
    Private Sub cargarProyecto(ByVal idUsuario As Int32)

        Proyectos = Rproyecto.SeleccionarXPersonal(Me.Master.descEmpresa, idUsuario)
        Session("proyectos") = Proyectos
        If Not Proyectos Is Nothing Then
            gvwProyectos.DataSource = Proyectos
            gvwProyectos.DataBind()
        End If
    End Sub
    Private Sub cargarProyectoSel(ByVal idUsuario As Int32)
        Dim ProyectosSel As List(Of Eproyecto) = Nothing
        ProyectosSel = Rproyecto.SeleccionarDisponibles(Me.Master.descEmpresa, True, idUsuario)

        selProyecto.DataSource = ProyectosSel
        selProyecto.DataTextField = "descProyecto"
        selProyecto.DataValueField = "idProyecto"
        selProyecto.DataBind()
    End Sub

    Private Sub cargarTpoDmto()
        selTpoDcmto.DataSource = RtpoDcmto.SeleccionarTodo(Me.Master.descEmpresa, True)
        selTpoDcmto.DataTextField = "descTpoDcmto"
        selTpoDcmto.DataValueField = "idTpoDcmto"
        selTpoDcmto.DataBind()
    End Sub
    Private Sub cargarEstado()
        Dim Eestado As New Ecommons
        selEstado.DataSource = Eestado.estado
        selEstado.DataTextField = "descripcion"
        selEstado.DataValueField = "codigo"
        selEstado.DataBind()
    End Sub
    Private Sub cargarPerfil()
        selPerfil.DataSource = RperfilUsuario.SeleccionarTodo(Me.Master.descEmpresa, True)
        selPerfil.DataTextField = "descPerfilUsuario"
        selPerfil.DataValueField = "idPerfilUsuario"
        selPerfil.DataBind()
    End Sub
    Protected Sub gvwLista_PageIndexChanging(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewPageEventArgs) Handles gvwLista.PageIndexChanging

    End Sub
    Protected Sub gvwLista_RowCommand(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewCommandEventArgs) Handles gvwLista.RowCommand
        Select Case e.CommandName
            Case "Edit"
            Case "Delete"
                Dim pPersonal As Epersonal = New Epersonal
                With pPersonal
                    .idPersonal = e.CommandArgument
                End With
                Rpersonal.Eliminar(Me.Master.descEmpresa, pPersonal)
                cargarPersonal()
        End Select
    End Sub
    Protected Sub gvwLista_RowDataBound(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewRowEventArgs) Handles gvwLista.RowDataBound
        If e.Row.RowType = DataControlRowType.DataRow Then
            e.Row.Attributes.Add("OnMouseOver", "Resaltar_On(this);")
            e.Row.Attributes.Add("OnMouseOut", "Resaltar_Off(this);")
            e.Row.Attributes("OnClick") = Page.ClientScript.GetPostBackClientHyperlink(Me.gvwLista, "Select$" + e.Row.RowIndex.ToString)
            e.Row.Style.Add("cursor", "hand")
        End If
    End Sub

    Protected Sub gvwLista_RowDeleting(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewDeleteEventArgs) Handles gvwLista.RowDeleting

    End Sub

    Protected Sub gvwLista_RowEditing(ByVal sender As Object, ByVal e As System.Web.UI.WebControls.GridViewEditEventArgs) Handles gvwLista.RowEditing
        Dim id As Int32 = CType(CType(gvwLista.Rows(e.NewEditIndex).FindControl("lnkCodigo"), LinkButton).Text, Int32)
        personals = Session("lista")
        Dim Lpersonal = From v In personals _
                            Where v.idPersonal.ToString = id _
                            Select v
        lblTitulo.Text = "Usuario [Modificar]"
        lblTitulo.ToolTip = "Modificar"
        txtId.Text = Lpersonal.ElementAt(0).idPersonal
        txtIdUsuario.Text = Lpersonal.ElementAt(0).Eusuario.id

        selPerfil.Value = Lpersonal.ElementAt(0).EperfilUsuario.idPerfilUsuario
        txtUsuario.Text = Lpersonal.ElementAt(0).Eusuario.usuario
        txtContraseña.Text = Lpersonal.ElementAt(0).Eusuario.contraseña

        selTpoDcmto.Value = Lpersonal.ElementAt(0).EtpoDocmto.idTpoDcmto
        txtNroDocumento.Value = Lpersonal.ElementAt(0).nroDcmto
        txtNombre.Value = Lpersonal.ElementAt(0).nombre
        txtApePaterno.Value = Lpersonal.ElementAt(0).apePaterno
        txtApeMaterno.Value = Lpersonal.ElementAt(0).apeMaterno
        txtDescripcion.Text = Lpersonal.ElementAt(0).descripcion
        txtAreaTrabajo.Text = Lpersonal.ElementAt(0).areaTrabajo
        txtTelefonoFijo.Text = Lpersonal.ElementAt(0).telefonoFijo
        txtTelefonoCelular.Text = Lpersonal.ElementAt(0).telefonoCelular
        txtEmail.Value = Lpersonal.ElementAt(0).email
        txtFchRegistro.Text = Lpersonal.ElementAt(0).fchRegistro
        txtFchCaducidad.Text = Lpersonal.ElementAt(0).fchCaducacion
        txtIntentos.Text = Lpersonal.ElementAt(0).intentos
        selEstado.SelectedIndex = Lpersonal.ElementAt(0).estado
        cargarProyecto(Lpersonal.ElementAt(0).Eusuario.id)
        cargarProyectoSel(Lpersonal.ElementAt(0).Eusuario.id)
        pselProyecto.Update()
        pnlProyectos.Update()
        mpDetalle.Show()
    End Sub
    Protected Sub btnGuardar_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles btnGuardar.Click
        If txtNombre.Value.Trim.Length > 0 AndAlso txtApeMaterno.Value.Trim.Length > 0 AndAlso txtApePaterno.Value.Trim.Length > 0 Then
            Dim jsMensaje As String = Nothing
            Dim pPersonal As Epersonal = Nothing
            Dim pUsuario As Eusuario = Nothing
            If txtId.Text = "0" Then
                pPersonal = New Epersonal
                With pPersonal
                    .EtpoDocmto = New EtpoDcmto
                    .EtpoDocmto.idTpoDcmto = selTpoDcmto.Value
                    .nroDcmto = txtNroDocumento.Value
                    .nombre = txtNombre.Value.Trim.ToUpper
                    .apePaterno = txtApePaterno.Value.Trim.ToUpper
                    .apeMaterno = txtApeMaterno.Value.Trim.ToUpper
                    .descripcion = txtDescripcion.Text.Trim.ToUpper
                    .areaTrabajo = txtAreaTrabajo.Text.Trim.ToUpper
                    .telefonoFijo = txtTelefonoFijo.Text.Trim.ToUpper
                    .telefonoCelular = txtTelefonoCelular.Text.Trim.ToUpper
                    .email = txtEmail.Value.Trim.ToUpper
                    .intentos = txtIntentos.Text.ToString
                    .fchRegistro = txtFchRegistro.Text.Trim.ToUpper
                    .fchCaducacion = txtFchCaducidad.Text.Trim.ToUpper
                    .idUsuario = Me.Master.idUsuario
                End With
                pUsuario = New Eusuario(CType(selPerfil.Value, Int32), txtUsuario.Text.ToUpper, txtContraseña.Text.ToUpper, Me.Master.idUsuario)
                Dim resultado As Boolean = Cpersonal.Añadir(Me.Master.descEmpresa, pPersonal, pUsuario)
                If resultado Then
                    jsMensaje = "<script>javascript:alert(' Se registro correctamente.');</script>)"
                    Controls.Add(New LiteralControl(jsMensaje))
                    cargarPersonal()
                Else
                    jsMensaje = "<script>javascript:alert('No se pudo registrar.');</script>)"
                    Controls.Add(New LiteralControl(jsMensaje))
                End If
            Else
                pPersonal = New Epersonal
                With pPersonal
                    .idPersonal = CType(txtId.Text, Int32)
                    .EtpoDocmto = New EtpoDcmto
                    .EtpoDocmto.idTpoDcmto = selTpoDcmto.Value
                    .nroDcmto = txtNroDocumento.Value
                    .nombre = txtNombre.Value.Trim.ToUpper
                    .apePaterno = txtApePaterno.Value.Trim.ToUpper
                    .apeMaterno = txtApeMaterno.Value.Trim.ToUpper
                    .descripcion = txtDescripcion.Text.Trim.ToUpper
                    .areaTrabajo = txtAreaTrabajo.Text.Trim.ToUpper
                    .telefonoFijo = txtTelefonoFijo.Text.Trim.ToUpper
                    .telefonoCelular = txtTelefonoCelular.Text.Trim.ToUpper
                    .email = txtEmail.Value.Trim.ToUpper
                    .intentos = txtIntentos.Text.ToString
                    .fchRegistro = txtFchRegistro.Text.Trim.ToUpper
                    .fchCaducacion = txtFchCaducidad.Text.Trim.ToUpper
                    .estado = selEstado.Value
                    .idUsuario = Me.Master.idUsuario
                End With
                pUsuario = New Eusuario(CType(selPerfil.Value, Int32), CType(txtId.Text, Int32), CType(txtIdUsuario.Text, Int32), txtUsuario.Text, txtContraseña.Text, Me.Master.idUsuario)
                Cpersonal.Editar(Me.Master.descEmpresa, pPersonal, pUsuario)
                jsMensaje = "<script>javascript:alert(' Se modifico correctamente.');</script>)"
                Controls.Add(New LiteralControl(jsMensaje))
                cargarPersonal()
            End If
            lblTitulo.ToolTip = "Registrar"
        End If
    End Sub
#Region "          CallBack                                 "
    Private _callbackArgument As String
    Public Function GetCallbackResult() As String Implements System.Web.UI.ICallbackEventHandler.GetCallbackResult
        Return _callbackArgument
    End Function
    Public Sub RaiseCallbackEvent(ByVal eventArgument As String) Implements System.Web.UI.ICallbackEventHandler.RaiseCallbackEvent
        Try
            If eventArgument <> String.Empty Then
                Dim varParams() As String = eventArgument.Split("@")
                Dim sr As New System.IO.StringWriter()
                Dim htm As New HtmlTextWriter(sr)
                Dim sr2 As New System.IO.StringWriter()
                Dim htm2 As New HtmlTextWriter(sr2)
                _callbackArgument = ""
                Select varParams(0)
                    Case "divEliminarProyecto"
                        Dim idUsuarioProyecto As Int32 = 0
                        Dim resultado As Boolean = False
                        Proyectos = New List(Of Eproyecto)

                        resultado = Rproyecto.EliminarProyecto(Me.Master.descEmpresa, varParams(1).ToString, varParams(2).ToString)
                        Proyectos = Rproyecto.SeleccionarXPersonal(Me.Master.descEmpresa, varParams(1).ToString)
                        pnlProyectos.Update()
                        gvwProyectos.DataSource = Proyectos
                        gvwProyectos.DataBind()
                        gvwProyectos.RenderControl(htm)
                        htm.Flush()
                        selProyecto.DataSource = Rproyecto.SeleccionarDisponibles(Me.Master.descEmpresa, True, varParams(1).ToString)
                        selProyecto.DataTextField = "descProyecto"
                        selProyecto.DataValueField = "idProyecto"
                        selProyecto.DataBind()
                        selProyecto.RenderControl(htm2)
                        htm2.Flush()

                        _callbackArgument = "divEliminarProyecto|divEliminarProyecto|" + sr.ToString() + "|" + sr2.ToString()

                    Case "divAgregarProyecto"
                        Dim idUsuarioProyecto As Int32 = 0
                        Dim resultado As Boolean = False
                        Proyectos = New List(Of Eproyecto)
                        resultado = Rproyecto.grabarProyecto(Me.Master.descEmpresa, varParams(1).ToString, varParams(2).ToString, idUsuarioProyecto)
                        Proyectos = Rproyecto.SeleccionarXPersonal(Me.Master.descEmpresa, varParams(1).ToString)
                        pnlProyectos.Update()
                        gvwProyectos.DataSource = Proyectos
                        gvwProyectos.DataBind()
                        gvwProyectos.RenderControl(htm)
                        htm.Flush()
                        selProyecto.DataSource = Rproyecto.SeleccionarDisponibles(Me.Master.descEmpresa, True, varParams(1).ToString)
                        selProyecto.DataTextField = "descProyecto"
                        selProyecto.DataValueField = "idProyecto"
                        selProyecto.DataBind()
                        selProyecto.RenderControl(htm2)
                        htm2.Flush()
                        _callbackArgument = "divAgregarProyecto|divAgregarProyecto|" + sr.ToString() + "|" + sr2.ToString()
                    Case "divLimpiaGrilla"
                        txtId.Text = ""
                        Proyectos = New List(Of Eproyecto)
                        pnlProyectos.Update()
                        gvwProyectos.DataSource = Proyectos
                        gvwProyectos.DataBind()
                        gvwProyectos.RenderControl(htm)
                        htm.Flush()

                        _callbackArgument = "divLimpiaGrilla|divLimpiaGrilla|" + sr.ToString()
                End Select
            End If
        Catch ex As Exception
            Throw ex
        End Try
    End Sub
#End Region
End Class
